package utils;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public enum PatternList {

	// entre 6 et 8 digits
	PIXIV_1("^(\\d{6,8})"), // pixiv simple
	// entre 6 et 8 digits, un _, des caracteres
	PIXIV_2("^(\\d{6,8})_(.*)"), // pixiv manga ou mal formate
	// entre 6 et 8 digits, un " ", des caracteres
	PIXIV_3("^(\\d{6,8})\\s(.*)"), // pixiv mal formate

	// commence par 10 digits, un ., des caractères, un _, des caracteres
	FA("^(\\d{10})\\.(.*)_(.*)"),
	
	// 15 caracteres alphanumeriques
	TWITTER("^[\\pL\\pN]{15}"),

	// entre 9 et 10 digits
	TWITP_1("^(\\d{9,10})"),
	TWITP_2("^(\\d{9,10})\\s(.*)"),
	
	// MOE_ puis 6 digits
	NI_CHAN("^(MOE_)\\d{6}"),
	
	// tumblr_ puis 19 caracteres alphanumeriques puis _ et des caracteres
	TUMBLR("^(tumblr)_[\\pL\\pN]{19}_(.*)");

	// caracteres, un tiret puis des caracteres
	//SF("^(.*)-(.*)");
	
	
	private String pattern = "";
	
	public static final String EXT = "(\\.jpg|\\.jpeg|\\.png|\\.gif)$";
	
	/**
	 * Constructeur.
	 * @param pattern
	 */
	PatternList(String pattern) {
		this.pattern = pattern;
	}

	public String makePattern(String... pat) {
		String res = "";
		for(String str : pat)
			res += str;
		return res;
	}
	
	/**
	 * Methode toString.
	 */
	public String toString() {
		return pattern;
	}

	// tests
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		Matcher matcher;
		Pattern pattern;
		
		list.add("7633245.jpg"); // pixiv
		list.add("32202970.jpg"); // pixiv
		list.add("32022223_p1.jpg"); // pixiv manga
		list.add("29726332 おおしば.jpg"); // pixiv mal formaté
		list.add("28511956_p2 おおしば.jpg"); // pixiv manga mal formaté

		list.add("BidC0HwCUAAnDDH.png"); // twitter
		list.add("BEFLnGACUAEMqOR.png"); // twitter
		
		list.add("MOE_000798.jpg"); // 2chan
		
		list.add("tumblr_mp8ifvB6lm1svqfn4o1_1280.jpg"); // tumblr
		list.add("tumblr_mq82erwOuv1svqfn4o6_400_875448519.jpg"); // tumblr mal formaté
		
		list.add("1394744446.alpha0_daitenshi_web_a.jpg"); // fa
		
		list.add("Alpha0-Commission-for-Daitenshi.jpeg"); // sf
		list.add("ClefWolf-Afterglow.png"); // sf
		
		list.add("839713589.jpg"); // twitpic
		list.add("154718219 おおしば.jpg"); // twitpic mal formaté
		
		list.add("aquatic (9).jpg"); // non reconnu
		list.add("e4d3edac9d601df7fe5014e1ea0ba2af Tetsuo Oshiba.jpg");
		list.add("tetsuooshiba musclegut bear.jpg");
		
		for(String file : list) {
			for(PatternList pat : PatternList.values()) {
				pattern = Pattern.compile(pat+EXT);
				matcher = pattern.matcher(file);
				if(matcher.find()) {
					System.out.println(pat.name()+"\t"+matcher.group());
					break;
				}
			}
		}
	}

}
